YES 17.226 H-Termination proof of /home/matraf/haskell/eval_FullyBlown_Fast/List.hs
H-Termination of the given Haskell-Program with start terms could successfully be proven:



HASKELL
  ↳ CR

mainModule List
  ((sort :: [Ratio Int ->  [Ratio Int]) :: [Ratio Int ->  [Ratio Int])

module List where
  import qualified Maybe
import qualified Prelude

  merge :: (a  ->  a  ->  Ordering ->  [a ->  [a ->  [a]
merge cmp xs [] xs
merge cmp [] ys ys
merge cmp (x : xs) (y : ys
case x `cmp` y of
  GT-> y : merge cmp (x : xs) ys
  _-> x : merge cmp xs (y : ys)

  merge_pairs :: (a  ->  a  ->  Ordering ->  [[a]]  ->  [[a]]
merge_pairs cmp [] []
merge_pairs cmp (xs : []xs : []
merge_pairs cmp (xs : ys : xssmerge cmp xs ys : merge_pairs cmp xss

  mergesort :: (a  ->  a  ->  Ordering ->  [a ->  [a]
mergesort cmp mergesort' cmp . map wrap

  mergesort' :: (a  ->  a  ->  Ordering ->  [[a]]  ->  [a]
mergesort' cmp [] []
mergesort' cmp (xs : []xs
mergesort' cmp xss mergesort' cmp (merge_pairs cmp xss)

  sort :: Ord a => [a ->  [a]
sort l mergesort compare l

  wrap :: a  ->  [a]
wrap x x : []


module Maybe where
  import qualified List
import qualified Prelude



Case Reductions:
The following Case expression
case cmp x y of
 GT → y : merge cmp (x : xsys
 _ → x : merge cmp xs (y : ys)

is transformed to
merge0 y cmp x xs ys GT = y : merge cmp (x : xsys
merge0 y cmp x xs ys _ = x : merge cmp xs (y : ys)



↳ HASKELL
  ↳ CR
HASKELL
      ↳ BR

mainModule List
  ((sort :: [Ratio Int ->  [Ratio Int]) :: [Ratio Int ->  [Ratio Int])

module List where
  import qualified Maybe
import qualified Prelude

  merge :: (a  ->  a  ->  Ordering ->  [a ->  [a ->  [a]
merge cmp xs [] xs
merge cmp [] ys ys
merge cmp (x : xs) (y : ysmerge0 y cmp x xs ys (x `cmp` y)

  
merge0 y cmp x xs ys GT y : merge cmp (x : xs) ys
merge0 y cmp x xs ys _ x : merge cmp xs (y : ys)

  merge_pairs :: (a  ->  a  ->  Ordering ->  [[a]]  ->  [[a]]
merge_pairs cmp [] []
merge_pairs cmp (xs : []xs : []
merge_pairs cmp (xs : ys : xssmerge cmp xs ys : merge_pairs cmp xss

  mergesort :: (a  ->  a  ->  Ordering ->  [a ->  [a]
mergesort cmp mergesort' cmp . map wrap

  mergesort' :: (a  ->  a  ->  Ordering ->  [[a]]  ->  [a]
mergesort' cmp [] []
mergesort' cmp (xs : []xs
mergesort' cmp xss mergesort' cmp (merge_pairs cmp xss)

  sort :: Ord a => [a ->  [a]
sort l mergesort compare l

  wrap :: a  ->  [a]
wrap x x : []


module Maybe where
  import qualified List
import qualified Prelude



Replaced joker patterns by fresh variables and removed binding patterns.

↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
HASKELL
          ↳ COR

mainModule List
  ((sort :: [Ratio Int ->  [Ratio Int]) :: [Ratio Int ->  [Ratio Int])

module List where
  import qualified Maybe
import qualified Prelude

  merge :: (a  ->  a  ->  Ordering ->  [a ->  [a ->  [a]
merge cmp xs [] xs
merge cmp [] ys ys
merge cmp (x : xs) (y : ysmerge0 y cmp x xs ys (x `cmp` y)

  
merge0 y cmp x xs ys GT y : merge cmp (x : xs) ys
merge0 y cmp x xs ys vw x : merge cmp xs (y : ys)

  merge_pairs :: (a  ->  a  ->  Ordering ->  [[a]]  ->  [[a]]
merge_pairs cmp [] []
merge_pairs cmp (xs : []xs : []
merge_pairs cmp (xs : ys : xssmerge cmp xs ys : merge_pairs cmp xss

  mergesort :: (a  ->  a  ->  Ordering ->  [a ->  [a]
mergesort cmp mergesort' cmp . map wrap

  mergesort' :: (a  ->  a  ->  Ordering ->  [[a]]  ->  [a]
mergesort' cmp [] []
mergesort' cmp (xs : []xs
mergesort' cmp xss mergesort' cmp (merge_pairs cmp xss)

  sort :: Ord a => [a ->  [a]
sort l mergesort compare l

  wrap :: a  ->  [a]
wrap x x : []


module Maybe where
  import qualified List
import qualified Prelude



Cond Reductions:
The following Function with conditions
undefined 
 | False
 = undefined

is transformed to
undefined  = undefined1

undefined0 True = undefined

undefined1  = undefined0 False



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
HASKELL
              ↳ Narrow

mainModule List
  (sort :: [Ratio Int ->  [Ratio Int])

module List where
  import qualified Maybe
import qualified Prelude

  merge :: (a  ->  a  ->  Ordering ->  [a ->  [a ->  [a]
merge cmp xs [] xs
merge cmp [] ys ys
merge cmp (x : xs) (y : ysmerge0 y cmp x xs ys (x `cmp` y)

  
merge0 y cmp x xs ys GT y : merge cmp (x : xs) ys
merge0 y cmp x xs ys vw x : merge cmp xs (y : ys)

  merge_pairs :: (a  ->  a  ->  Ordering ->  [[a]]  ->  [[a]]
merge_pairs cmp [] []
merge_pairs cmp (xs : []xs : []
merge_pairs cmp (xs : ys : xssmerge cmp xs ys : merge_pairs cmp xss

  mergesort :: (a  ->  a  ->  Ordering ->  [a ->  [a]
mergesort cmp mergesort' cmp . map wrap

  mergesort' :: (a  ->  a  ->  Ordering ->  [[a]]  ->  [a]
mergesort' cmp [] []
mergesort' cmp (xs : []xs
mergesort' cmp xss mergesort' cmp (merge_pairs cmp xss)

  sort :: Ord a => [a ->  [a]
sort l mergesort compare l

  wrap :: a  ->  [a]
wrap x x : []


module Maybe where
  import qualified List
import qualified Prelude



Haskell To QDPs


↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
QDP
                    ↳ QDPSizeChangeProof
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_map(:(vz3110, vz3111)) → new_map(vz3111)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
QDP
                    ↳ QDPSizeChangeProof
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primPlusNat(Succ(vz51600), Succ(vz50401000)) → new_primPlusNat(vz51600, vz50401000)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
                  ↳ QDP
QDP
                    ↳ QDPSizeChangeProof
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primMulNat(Succ(vz5030000), Succ(vz5040100)) → new_primMulNat(vz5030000, Succ(vz5040100))

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
QDP
                    ↳ QDPSizeChangeProof
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_primCmpNat(Succ(vz5010000), Succ(vz50200000)) → new_primCmpNat(vz5010000, vz50200000)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
QDP
                    ↳ QDPOrderProof
                  ↳ QDP
                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_merge0(vz511, vz512, vz513, vz514, GT, ba) → new_merge(:(vz512, vz513), vz514, ba)
new_merge0(vz511, vz512, vz513, vz514, EQ, ba) → new_merge(vz513, :(vz511, vz514), ba)
new_merge(:(vz5010, vz5011), :(vz50200, vz50201), bb) → new_merge0(vz50200, vz5010, vz5011, vz50201, new_compare(vz5010, vz50200, bb), bb)
new_merge0(vz511, vz512, vz513, vz514, LT, ba) → new_merge(vz513, :(vz511, vz514), ba)

The TRS R consists of the following rules:

new_sr(Neg(vz503000), Neg(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, app(ty_Ratio, ca)) → new_compare2(vz5010, vz50200, ca)
new_primCmpNat1(Succ(vz5010000), Succ(vz50200000)) → new_primCmpNat1(vz5010000, vz50200000)
new_compare3(Neg(Zero), Pos(Zero)) → EQ
new_compare3(Pos(Zero), Neg(Zero)) → EQ
new_compare10(vz5010, vz50200) → error([])
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Integer) → new_compare4(new_sr0(vz50100, vz502001), new_sr0(vz502000, vz50101))
new_primCmpNat2(Zero, vz501000) → LT
new_sr(Pos(vz503000), Pos(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, ty_Char) → new_compare1(vz5010, vz50200)
new_compare(vz5010, vz50200, ty_Bool) → new_compare6(vz5010, vz50200)
new_compare3(Neg(Zero), Pos(Succ(vz5020000))) → LT
new_primPlusNat1(Succ(vz51600), Succ(vz50401000)) → Succ(Succ(new_primPlusNat1(vz51600, vz50401000)))
new_sr0(vz502000, vz50101) → error([])
new_compare(vz5010, vz50200, ty_Float) → new_compare9(vz5010, vz50200)
new_primMulNat0(Zero, Succ(vz5040100)) → Zero
new_primMulNat0(Succ(vz5030000), Zero) → Zero
new_compare(vz5010, vz50200, ty_Int) → new_compare3(vz5010, vz50200)
new_primPlusNat1(Zero, Zero) → Zero
new_compare7(vz5010, vz50200, be) → error([])
new_primCmpNat1(Zero, Succ(vz50200000)) → LT
new_compare8(vz5010, vz50200, bf, bg) → error([])
new_primCmpNat2(Succ(vz5020000), vz501000) → new_primCmpNat1(vz5020000, vz501000)
new_compare(vz5010, vz50200, ty_Double) → new_compare12(vz5010, vz50200)
new_compare(vz5010, vz50200, app(app(app(ty_@3, cb), cc), cd)) → new_compare13(vz5010, vz50200, cb, cc, cd)
new_primMulNat0(Succ(vz5030000), Succ(vz5040100)) → new_primPlusNat0(new_primMulNat0(vz5030000, Succ(vz5040100)), vz5040100)
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Int) → new_compare3(new_sr(vz50100, vz502001), new_sr(vz502000, vz50101))
new_compare(vz5010, vz50200, app(app(ty_Either, bc), bd)) → new_compare0(vz5010, vz50200, bc, bd)
new_compare9(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(app(ty_@2, bf), bg)) → new_compare8(vz5010, vz50200, bf, bg)
new_compare0(vz5010, vz50200, bc, bd) → error([])
new_compare3(Pos(Zero), Pos(Succ(vz5020000))) → new_primCmpNat2(Zero, vz5020000)
new_compare3(Neg(Succ(vz501000)), Pos(vz502000)) → LT
new_primCmpNat1(Zero, Zero) → EQ
new_compare3(Pos(Zero), Pos(Zero)) → EQ
new_compare3(Pos(Succ(vz501000)), Pos(vz502000)) → new_primCmpNat0(vz501000, vz502000)
new_primCmpNat0(vz501000, Zero) → GT
new_primMulNat0(Zero, Zero) → Zero
new_compare4(vz5010, vz50200) → error([])
new_primPlusNat0(Succ(vz5160), vz5040100) → Succ(Succ(new_primPlusNat1(vz5160, vz5040100)))
new_compare11(vz5010, vz50200, bh) → error([])
new_compare(vz5010, vz50200, ty_Integer) → new_compare4(vz5010, vz50200)
new_compare(vz5010, vz50200, ty_@0) → new_compare5(vz5010, vz50200)
new_compare3(Neg(Succ(vz501000)), Neg(vz502000)) → new_primCmpNat2(vz502000, vz501000)
new_primPlusNat0(Zero, vz5040100) → Succ(vz5040100)
new_primCmpNat1(Succ(vz5010000), Zero) → GT
new_compare3(Neg(Zero), Neg(Succ(vz5020000))) → new_primCmpNat0(vz5020000, Zero)
new_compare1(vz5010, vz50200) → error([])
new_compare6(vz5010, vz50200) → error([])
new_compare5(vz5010, vz50200) → error([])
new_compare12(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(ty_Maybe, be)) → new_compare7(vz5010, vz50200, be)
new_primPlusNat1(Succ(vz51600), Zero) → Succ(vz51600)
new_primPlusNat1(Zero, Succ(vz50401000)) → Succ(vz50401000)
new_compare3(Pos(Zero), Neg(Succ(vz5020000))) → GT
new_sr(Pos(vz503000), Neg(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_sr(Neg(vz503000), Pos(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, ty_Ordering) → new_compare10(vz5010, vz50200)
new_compare3(Neg(Zero), Neg(Zero)) → EQ
new_compare3(Pos(Succ(vz501000)), Neg(vz502000)) → GT
new_primCmpNat0(vz501000, Succ(vz5020000)) → new_primCmpNat1(vz501000, vz5020000)
new_compare13(vz5010, vz50200, cb, cc, cd) → error([])
new_compare(vz5010, vz50200, app(ty_[], bh)) → new_compare11(vz5010, vz50200, bh)

The set Q consists of the following terms:

new_primPlusNat0(Succ(x0), x1)
new_primCmpNat0(x0, Succ(x1))
new_compare(x0, x1, ty_Bool)
new_compare0(x0, x1, x2, x3)
new_compare9(x0, x1)
new_compare(x0, x1, ty_Integer)
new_primMulNat0(Zero, Zero)
new_compare11(x0, x1, x2)
new_compare(x0, x1, ty_Char)
new_sr0(x0, x1)
new_compare12(x0, x1)
new_compare(x0, x1, ty_Double)
new_compare(x0, x1, app(app(ty_Either, x2), x3))
new_primPlusNat0(Zero, x0)
new_compare1(x0, x1)
new_compare(x0, x1, ty_Float)
new_compare3(Pos(Succ(x0)), Pos(x1))
new_compare(x0, x1, ty_Ordering)
new_compare5(x0, x1)
new_compare10(x0, x1)
new_compare3(Neg(Zero), Neg(Succ(x0)))
new_primPlusNat1(Zero, Zero)
new_compare2(:%(x0, x1), :%(x2, x3), ty_Integer)
new_primCmpNat1(Zero, Zero)
new_primCmpNat1(Succ(x0), Succ(x1))
new_primPlusNat1(Zero, Succ(x0))
new_primMulNat0(Succ(x0), Succ(x1))
new_primPlusNat1(Succ(x0), Zero)
new_compare(x0, x1, ty_Int)
new_primMulNat0(Zero, Succ(x0))
new_primCmpNat2(Zero, x0)
new_compare(x0, x1, app(ty_Maybe, x2))
new_compare3(Pos(Zero), Pos(Succ(x0)))
new_compare3(Neg(Zero), Neg(Zero))
new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare(x0, x1, app(ty_Ratio, x2))
new_compare13(x0, x1, x2, x3, x4)
new_compare2(:%(x0, x1), :%(x2, x3), ty_Int)
new_primMulNat0(Succ(x0), Zero)
new_primCmpNat0(x0, Zero)
new_compare(x0, x1, app(ty_[], x2))
new_compare4(x0, x1)
new_sr(Pos(x0), Pos(x1))
new_compare3(Pos(Zero), Neg(Succ(x0)))
new_compare7(x0, x1, x2)
new_compare3(Neg(Zero), Pos(Succ(x0)))
new_compare3(Pos(Zero), Pos(Zero))
new_primCmpNat1(Succ(x0), Zero)
new_compare6(x0, x1)
new_compare3(Neg(Succ(x0)), Neg(x1))
new_primCmpNat2(Succ(x0), x1)
new_compare(x0, x1, app(app(ty_@2, x2), x3))
new_compare8(x0, x1, x2, x3)
new_sr(Pos(x0), Neg(x1))
new_sr(Neg(x0), Pos(x1))
new_sr(Neg(x0), Neg(x1))
new_compare3(Pos(Succ(x0)), Neg(x1))
new_compare3(Neg(Succ(x0)), Pos(x1))
new_primCmpNat1(Zero, Succ(x0))
new_compare3(Pos(Zero), Neg(Zero))
new_compare3(Neg(Zero), Pos(Zero))
new_primPlusNat1(Succ(x0), Succ(x1))
new_compare(x0, x1, ty_@0)

We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].


The following pairs can be oriented strictly and are deleted.


new_merge0(vz511, vz512, vz513, vz514, EQ, ba) → new_merge(vz513, :(vz511, vz514), ba)
new_merge0(vz511, vz512, vz513, vz514, LT, ba) → new_merge(vz513, :(vz511, vz514), ba)
The remaining pairs can at least be oriented weakly.

new_merge0(vz511, vz512, vz513, vz514, GT, ba) → new_merge(:(vz512, vz513), vz514, ba)
new_merge(:(vz5010, vz5011), :(vz50200, vz50201), bb) → new_merge0(vz50200, vz5010, vz5011, vz50201, new_compare(vz5010, vz50200, bb), bb)
Used ordering: Polynomial interpretation [25]:

POL(:(x1, x2)) = 1 + x2   
POL(:%(x1, x2)) = 0   
POL(EQ) = 0   
POL(GT) = 0   
POL(LT) = 0   
POL(Neg(x1)) = 0   
POL(Pos(x1)) = x1   
POL(Succ(x1)) = 1   
POL(Zero) = 1   
POL([]) = 0   
POL(app(x1, x2)) = 0   
POL(error(x1)) = 0   
POL(new_compare(x1, x2, x3)) = 0   
POL(new_compare0(x1, x2, x3, x4)) = 0   
POL(new_compare1(x1, x2)) = 0   
POL(new_compare10(x1, x2)) = 0   
POL(new_compare11(x1, x2, x3)) = 0   
POL(new_compare12(x1, x2)) = 0   
POL(new_compare13(x1, x2, x3, x4, x5)) = 0   
POL(new_compare2(x1, x2, x3)) = 0   
POL(new_compare3(x1, x2)) = 0   
POL(new_compare4(x1, x2)) = 0   
POL(new_compare5(x1, x2)) = 0   
POL(new_compare6(x1, x2)) = 0   
POL(new_compare7(x1, x2, x3)) = 0   
POL(new_compare8(x1, x2, x3, x4)) = 0   
POL(new_compare9(x1, x2)) = 0   
POL(new_merge(x1, x2, x3)) = x1   
POL(new_merge0(x1, x2, x3, x4, x5, x6)) = 1 + x3   
POL(new_primCmpNat0(x1, x2)) = 0   
POL(new_primCmpNat1(x1, x2)) = 0   
POL(new_primCmpNat2(x1, x2)) = 0   
POL(new_primMulNat0(x1, x2)) = 0   
POL(new_primPlusNat0(x1, x2)) = 0   
POL(new_primPlusNat1(x1, x2)) = 1 + x1   
POL(new_sr(x1, x2)) = 1 + x1   
POL(new_sr0(x1, x2)) = 1   
POL(ty_@0) = 0   
POL(ty_@2) = 0   
POL(ty_@3) = 0   
POL(ty_Bool) = 0   
POL(ty_Char) = 0   
POL(ty_Double) = 0   
POL(ty_Either) = 0   
POL(ty_Float) = 0   
POL(ty_Int) = 0   
POL(ty_Integer) = 0   
POL(ty_Maybe) = 0   
POL(ty_Ordering) = 0   
POL(ty_Ratio) = 0   
POL(ty_[]) = 0   

The following usable rules [17] were oriented: none



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                    ↳ QDPOrderProof
QDP
                        ↳ QDPSizeChangeProof
                  ↳ QDP
                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_merge0(vz511, vz512, vz513, vz514, GT, ba) → new_merge(:(vz512, vz513), vz514, ba)
new_merge(:(vz5010, vz5011), :(vz50200, vz50201), bb) → new_merge0(vz50200, vz5010, vz5011, vz50201, new_compare(vz5010, vz50200, bb), bb)

The TRS R consists of the following rules:

new_sr(Neg(vz503000), Neg(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, app(ty_Ratio, ca)) → new_compare2(vz5010, vz50200, ca)
new_primCmpNat1(Succ(vz5010000), Succ(vz50200000)) → new_primCmpNat1(vz5010000, vz50200000)
new_compare3(Neg(Zero), Pos(Zero)) → EQ
new_compare3(Pos(Zero), Neg(Zero)) → EQ
new_compare10(vz5010, vz50200) → error([])
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Integer) → new_compare4(new_sr0(vz50100, vz502001), new_sr0(vz502000, vz50101))
new_primCmpNat2(Zero, vz501000) → LT
new_sr(Pos(vz503000), Pos(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, ty_Char) → new_compare1(vz5010, vz50200)
new_compare(vz5010, vz50200, ty_Bool) → new_compare6(vz5010, vz50200)
new_compare3(Neg(Zero), Pos(Succ(vz5020000))) → LT
new_primPlusNat1(Succ(vz51600), Succ(vz50401000)) → Succ(Succ(new_primPlusNat1(vz51600, vz50401000)))
new_sr0(vz502000, vz50101) → error([])
new_compare(vz5010, vz50200, ty_Float) → new_compare9(vz5010, vz50200)
new_primMulNat0(Zero, Succ(vz5040100)) → Zero
new_primMulNat0(Succ(vz5030000), Zero) → Zero
new_compare(vz5010, vz50200, ty_Int) → new_compare3(vz5010, vz50200)
new_primPlusNat1(Zero, Zero) → Zero
new_compare7(vz5010, vz50200, be) → error([])
new_primCmpNat1(Zero, Succ(vz50200000)) → LT
new_compare8(vz5010, vz50200, bf, bg) → error([])
new_primCmpNat2(Succ(vz5020000), vz501000) → new_primCmpNat1(vz5020000, vz501000)
new_compare(vz5010, vz50200, ty_Double) → new_compare12(vz5010, vz50200)
new_compare(vz5010, vz50200, app(app(app(ty_@3, cb), cc), cd)) → new_compare13(vz5010, vz50200, cb, cc, cd)
new_primMulNat0(Succ(vz5030000), Succ(vz5040100)) → new_primPlusNat0(new_primMulNat0(vz5030000, Succ(vz5040100)), vz5040100)
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Int) → new_compare3(new_sr(vz50100, vz502001), new_sr(vz502000, vz50101))
new_compare(vz5010, vz50200, app(app(ty_Either, bc), bd)) → new_compare0(vz5010, vz50200, bc, bd)
new_compare9(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(app(ty_@2, bf), bg)) → new_compare8(vz5010, vz50200, bf, bg)
new_compare0(vz5010, vz50200, bc, bd) → error([])
new_compare3(Pos(Zero), Pos(Succ(vz5020000))) → new_primCmpNat2(Zero, vz5020000)
new_compare3(Neg(Succ(vz501000)), Pos(vz502000)) → LT
new_primCmpNat1(Zero, Zero) → EQ
new_compare3(Pos(Zero), Pos(Zero)) → EQ
new_compare3(Pos(Succ(vz501000)), Pos(vz502000)) → new_primCmpNat0(vz501000, vz502000)
new_primCmpNat0(vz501000, Zero) → GT
new_primMulNat0(Zero, Zero) → Zero
new_compare4(vz5010, vz50200) → error([])
new_primPlusNat0(Succ(vz5160), vz5040100) → Succ(Succ(new_primPlusNat1(vz5160, vz5040100)))
new_compare11(vz5010, vz50200, bh) → error([])
new_compare(vz5010, vz50200, ty_Integer) → new_compare4(vz5010, vz50200)
new_compare(vz5010, vz50200, ty_@0) → new_compare5(vz5010, vz50200)
new_compare3(Neg(Succ(vz501000)), Neg(vz502000)) → new_primCmpNat2(vz502000, vz501000)
new_primPlusNat0(Zero, vz5040100) → Succ(vz5040100)
new_primCmpNat1(Succ(vz5010000), Zero) → GT
new_compare3(Neg(Zero), Neg(Succ(vz5020000))) → new_primCmpNat0(vz5020000, Zero)
new_compare1(vz5010, vz50200) → error([])
new_compare6(vz5010, vz50200) → error([])
new_compare5(vz5010, vz50200) → error([])
new_compare12(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(ty_Maybe, be)) → new_compare7(vz5010, vz50200, be)
new_primPlusNat1(Succ(vz51600), Zero) → Succ(vz51600)
new_primPlusNat1(Zero, Succ(vz50401000)) → Succ(vz50401000)
new_compare3(Pos(Zero), Neg(Succ(vz5020000))) → GT
new_sr(Pos(vz503000), Neg(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_sr(Neg(vz503000), Pos(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, ty_Ordering) → new_compare10(vz5010, vz50200)
new_compare3(Neg(Zero), Neg(Zero)) → EQ
new_compare3(Pos(Succ(vz501000)), Neg(vz502000)) → GT
new_primCmpNat0(vz501000, Succ(vz5020000)) → new_primCmpNat1(vz501000, vz5020000)
new_compare13(vz5010, vz50200, cb, cc, cd) → error([])
new_compare(vz5010, vz50200, app(ty_[], bh)) → new_compare11(vz5010, vz50200, bh)

The set Q consists of the following terms:

new_primPlusNat0(Succ(x0), x1)
new_primCmpNat0(x0, Succ(x1))
new_compare(x0, x1, ty_Bool)
new_compare0(x0, x1, x2, x3)
new_compare9(x0, x1)
new_compare(x0, x1, ty_Integer)
new_primMulNat0(Zero, Zero)
new_compare11(x0, x1, x2)
new_compare(x0, x1, ty_Char)
new_sr0(x0, x1)
new_compare12(x0, x1)
new_compare(x0, x1, ty_Double)
new_compare(x0, x1, app(app(ty_Either, x2), x3))
new_primPlusNat0(Zero, x0)
new_compare1(x0, x1)
new_compare(x0, x1, ty_Float)
new_compare3(Pos(Succ(x0)), Pos(x1))
new_compare(x0, x1, ty_Ordering)
new_compare5(x0, x1)
new_compare10(x0, x1)
new_compare3(Neg(Zero), Neg(Succ(x0)))
new_primPlusNat1(Zero, Zero)
new_compare2(:%(x0, x1), :%(x2, x3), ty_Integer)
new_primCmpNat1(Zero, Zero)
new_primCmpNat1(Succ(x0), Succ(x1))
new_primPlusNat1(Zero, Succ(x0))
new_primMulNat0(Succ(x0), Succ(x1))
new_primPlusNat1(Succ(x0), Zero)
new_compare(x0, x1, ty_Int)
new_primMulNat0(Zero, Succ(x0))
new_primCmpNat2(Zero, x0)
new_compare(x0, x1, app(ty_Maybe, x2))
new_compare3(Pos(Zero), Pos(Succ(x0)))
new_compare3(Neg(Zero), Neg(Zero))
new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare(x0, x1, app(ty_Ratio, x2))
new_compare13(x0, x1, x2, x3, x4)
new_compare2(:%(x0, x1), :%(x2, x3), ty_Int)
new_primMulNat0(Succ(x0), Zero)
new_primCmpNat0(x0, Zero)
new_compare(x0, x1, app(ty_[], x2))
new_compare4(x0, x1)
new_sr(Pos(x0), Pos(x1))
new_compare3(Pos(Zero), Neg(Succ(x0)))
new_compare7(x0, x1, x2)
new_compare3(Neg(Zero), Pos(Succ(x0)))
new_compare3(Pos(Zero), Pos(Zero))
new_primCmpNat1(Succ(x0), Zero)
new_compare6(x0, x1)
new_compare3(Neg(Succ(x0)), Neg(x1))
new_primCmpNat2(Succ(x0), x1)
new_compare(x0, x1, app(app(ty_@2, x2), x3))
new_compare8(x0, x1, x2, x3)
new_sr(Pos(x0), Neg(x1))
new_sr(Neg(x0), Pos(x1))
new_sr(Neg(x0), Neg(x1))
new_compare3(Pos(Succ(x0)), Neg(x1))
new_compare3(Neg(Succ(x0)), Pos(x1))
new_primCmpNat1(Zero, Succ(x0))
new_compare3(Pos(Zero), Neg(Zero))
new_compare3(Neg(Zero), Pos(Zero))
new_primPlusNat1(Succ(x0), Succ(x1))
new_compare(x0, x1, ty_@0)

We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
QDP
                    ↳ QDPSizeChangeProof
                  ↳ QDP

Q DP problem:
The TRS P consists of the following rules:

new_merge_pairs(:(vz502110, :(vz5021110, vz5021111)), ba) → new_merge_pairs(vz5021111, ba)

R is empty.
Q is empty.
We have to consider all minimal (P,Q,R)-chains.
By using the subterm criterion [20] together with the size-change analysis [32] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
QDP
                    ↳ DependencyGraphProof

Q DP problem:
The TRS P consists of the following rules:

new_mergesort'(vz501, :(vz5020, []), ba) → new_mergesort'(new_merge2(vz501, vz5020, ba), [], ba)
new_mergesort'(vz501, :(vz5020, :(vz50210, vz50211)), ba) → new_mergesort'(new_merge1(vz501, vz5020, vz50210, ba), new_merge_pairs0(vz50211, ba), ba)

The TRS R consists of the following rules:

new_sr(Neg(vz503000), Neg(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, app(ty_Ratio, cb)) → new_compare2(vz5010, vz50200, cb)
new_primCmpNat1(Succ(vz5010000), Succ(vz50200000)) → new_primCmpNat1(vz5010000, vz50200000)
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Integer) → new_compare4(new_sr0(vz50100, vz502001), new_sr0(vz502000, vz50101))
new_compare10(vz5010, vz50200) → error([])
new_compare3(Pos(Zero), Neg(Zero)) → EQ
new_compare3(Neg(Zero), Pos(Zero)) → EQ
new_sr(Pos(vz503000), Pos(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_primCmpNat2(Zero, vz501000) → LT
new_merge00(vz511, vz512, vz513, vz514, LT, cd) → :(vz512, new_merge2(vz513, :(vz511, vz514), cd))
new_compare14(vz50200, vz502100, ty_Int) → new_compare3(vz50200, vz502100)
new_compare14(vz50200, vz502100, app(app(ty_@2, be), bf)) → new_compare8(vz50200, vz502100, be, bf)
new_compare(vz5010, vz50200, ty_Char) → new_compare1(vz5010, vz50200)
new_compare(vz5010, vz50200, ty_Bool) → new_compare6(vz5010, vz50200)
new_primPlusNat1(Succ(vz51600), Succ(vz50401000)) → Succ(Succ(new_primPlusNat1(vz51600, vz50401000)))
new_merge_pairs0(:(vz502110, :(vz5021110, vz5021111)), ba) → :(new_merge2(vz502110, vz5021110, ba), new_merge_pairs0(vz5021111, ba))
new_compare3(Neg(Zero), Pos(Succ(vz5020000))) → LT
new_compare14(vz50200, vz502100, ty_Char) → new_compare1(vz50200, vz502100)
new_sr0(vz502000, vz50101) → error([])
new_merge1(vz501, [], :(vz502100, vz502101), ba) → new_merge2(vz501, :(vz502100, vz502101), ba)
new_compare(vz5010, vz50200, ty_Float) → new_compare9(vz5010, vz50200)
new_merge_pairs0(:(vz502110, []), ba) → :(vz502110, [])
new_primMulNat0(Zero, Succ(vz5040100)) → Zero
new_primMulNat0(Succ(vz5030000), Zero) → Zero
new_compare(vz5010, vz50200, ty_Int) → new_compare3(vz5010, vz50200)
new_merge1(vz501, :(vz50200, vz50201), :(vz502100, vz502101), ba) → new_merge2(vz501, new_merge00(vz502100, vz50200, vz50201, vz502101, new_compare14(vz50200, vz502100, ba), ba), ba)
new_primPlusNat1(Zero, Zero) → Zero
new_compare14(vz50200, vz502100, ty_Ordering) → new_compare10(vz50200, vz502100)
new_compare7(vz5010, vz50200, bd) → error([])
new_primCmpNat1(Zero, Succ(vz50200000)) → LT
new_merge00(vz511, vz512, vz513, vz514, GT, cd) → :(vz511, new_merge2(:(vz512, vz513), vz514, cd))
new_compare8(vz5010, vz50200, be, bf) → error([])
new_primCmpNat2(Succ(vz5020000), vz501000) → new_primCmpNat1(vz5020000, vz501000)
new_compare(vz5010, vz50200, ty_Double) → new_compare12(vz5010, vz50200)
new_compare(vz5010, vz50200, app(app(app(ty_@3, bg), bh), ca)) → new_compare13(vz5010, vz50200, bg, bh, ca)
new_primMulNat0(Succ(vz5030000), Succ(vz5040100)) → new_primPlusNat0(new_primMulNat0(vz5030000, Succ(vz5040100)), vz5040100)
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Int) → new_compare3(new_sr(vz50100, vz502001), new_sr(vz502000, vz50101))
new_compare(vz5010, vz50200, app(app(ty_Either, bb), bc)) → new_compare0(vz5010, vz50200, bb, bc)
new_compare9(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(app(ty_@2, be), bf)) → new_compare8(vz5010, vz50200, be, bf)
new_compare0(vz5010, vz50200, bb, bc) → error([])
new_compare14(vz50200, vz502100, app(app(ty_Either, bb), bc)) → new_compare0(vz50200, vz502100, bb, bc)
new_compare14(vz50200, vz502100, app(ty_Maybe, bd)) → new_compare7(vz50200, vz502100, bd)
new_compare3(Pos(Zero), Pos(Succ(vz5020000))) → new_primCmpNat2(Zero, vz5020000)
new_compare3(Neg(Succ(vz501000)), Pos(vz502000)) → LT
new_primCmpNat1(Zero, Zero) → EQ
new_primCmpNat0(vz501000, Zero) → GT
new_compare3(Pos(Succ(vz501000)), Pos(vz502000)) → new_primCmpNat0(vz501000, vz502000)
new_compare3(Pos(Zero), Pos(Zero)) → EQ
new_merge2([], :(vz50200, vz50201), ba) → :(vz50200, vz50201)
new_primMulNat0(Zero, Zero) → Zero
new_merge_pairs0([], ba) → []
new_compare4(vz5010, vz50200) → error([])
new_primPlusNat0(Succ(vz5160), vz5040100) → Succ(Succ(new_primPlusNat1(vz5160, vz5040100)))
new_compare(vz5010, vz50200, ty_Integer) → new_compare4(vz5010, vz50200)
new_compare11(vz5010, vz50200, cc) → error([])
new_merge1(vz501, vz5020, [], ba) → new_merge2(vz501, vz5020, ba)
new_merge2(:(vz5010, vz5011), :(vz50200, vz50201), ba) → new_merge00(vz50200, vz5010, vz5011, vz50201, new_compare(vz5010, vz50200, ba), ba)
new_compare14(vz50200, vz502100, app(ty_[], cc)) → new_compare11(vz50200, vz502100, cc)
new_compare(vz5010, vz50200, ty_@0) → new_compare5(vz5010, vz50200)
new_primPlusNat0(Zero, vz5040100) → Succ(vz5040100)
new_compare3(Neg(Succ(vz501000)), Neg(vz502000)) → new_primCmpNat2(vz502000, vz501000)
new_merge2(vz501, [], ba) → vz501
new_primCmpNat1(Succ(vz5010000), Zero) → GT
new_compare3(Neg(Zero), Neg(Succ(vz5020000))) → new_primCmpNat0(vz5020000, Zero)
new_compare14(vz50200, vz502100, ty_Double) → new_compare12(vz50200, vz502100)
new_compare1(vz5010, vz50200) → error([])
new_compare6(vz5010, vz50200) → error([])
new_compare14(vz50200, vz502100, ty_Float) → new_compare9(vz50200, vz502100)
new_compare5(vz5010, vz50200) → error([])
new_compare12(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(ty_Maybe, bd)) → new_compare7(vz5010, vz50200, bd)
new_primPlusNat1(Succ(vz51600), Zero) → Succ(vz51600)
new_primPlusNat1(Zero, Succ(vz50401000)) → Succ(vz50401000)
new_compare3(Pos(Zero), Neg(Succ(vz5020000))) → GT
new_sr(Neg(vz503000), Pos(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_sr(Pos(vz503000), Neg(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_compare14(vz50200, vz502100, ty_Bool) → new_compare6(vz50200, vz502100)
new_compare(vz5010, vz50200, ty_Ordering) → new_compare10(vz5010, vz50200)
new_merge00(vz511, vz512, vz513, vz514, EQ, cd) → :(vz512, new_merge2(vz513, :(vz511, vz514), cd))
new_compare14(vz50200, vz502100, app(ty_Ratio, cb)) → new_compare2(vz50200, vz502100, cb)
new_compare14(vz50200, vz502100, app(app(app(ty_@3, bg), bh), ca)) → new_compare13(vz50200, vz502100, bg, bh, ca)
new_compare3(Pos(Succ(vz501000)), Neg(vz502000)) → GT
new_compare3(Neg(Zero), Neg(Zero)) → EQ
new_primCmpNat0(vz501000, Succ(vz5020000)) → new_primCmpNat1(vz501000, vz5020000)
new_compare14(vz50200, vz502100, ty_Integer) → new_compare4(vz50200, vz502100)
new_compare13(vz5010, vz50200, bg, bh, ca) → error([])
new_compare(vz5010, vz50200, app(ty_[], cc)) → new_compare11(vz5010, vz50200, cc)
new_compare14(vz50200, vz502100, ty_@0) → new_compare5(vz50200, vz502100)

The set Q consists of the following terms:

new_primPlusNat0(Succ(x0), x1)
new_compare14(x0, x1, ty_Double)
new_primCmpNat0(x0, Succ(x1))
new_merge2([], :(x0, x1), x2)
new_compare(x0, x1, ty_Bool)
new_merge1(x0, :(x1, x2), :(x3, x4), x5)
new_compare(x0, x1, ty_Integer)
new_compare9(x0, x1)
new_merge1(x0, x1, [], x2)
new_primMulNat0(Zero, Zero)
new_compare(x0, x1, ty_Char)
new_sr0(x0, x1)
new_compare14(x0, x1, app(ty_[], x2))
new_compare12(x0, x1)
new_compare(x0, x1, ty_Double)
new_compare14(x0, x1, app(app(ty_Either, x2), x3))
new_primPlusNat0(Zero, x0)
new_merge2(:(x0, x1), :(x2, x3), x4)
new_compare1(x0, x1)
new_compare(x0, x1, ty_Float)
new_compare14(x0, x1, ty_Ordering)
new_merge_pairs0(:(x0, :(x1, x2)), x3)
new_compare3(Pos(Succ(x0)), Pos(x1))
new_compare(x0, x1, ty_Ordering)
new_merge00(x0, x1, x2, x3, EQ, x4)
new_compare(x0, x1, app(ty_Maybe, x2))
new_compare5(x0, x1)
new_compare10(x0, x1)
new_compare3(Neg(Zero), Neg(Succ(x0)))
new_compare7(x0, x1, x2)
new_compare14(x0, x1, app(ty_Ratio, x2))
new_primPlusNat1(Zero, Zero)
new_merge00(x0, x1, x2, x3, LT, x4)
new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare2(:%(x0, x1), :%(x2, x3), ty_Integer)
new_compare14(x0, x1, ty_Float)
new_compare(x0, x1, app(ty_Ratio, x2))
new_primCmpNat1(Zero, Zero)
new_compare13(x0, x1, x2, x3, x4)
new_primCmpNat1(Succ(x0), Succ(x1))
new_compare14(x0, x1, app(app(ty_@2, x2), x3))
new_compare14(x0, x1, app(ty_Maybe, x2))
new_merge_pairs0([], x0)
new_primPlusNat1(Zero, Succ(x0))
new_compare8(x0, x1, x2, x3)
new_primMulNat0(Succ(x0), Succ(x1))
new_primPlusNat1(Succ(x0), Zero)
new_compare(x0, x1, ty_Int)
new_primMulNat0(Zero, Succ(x0))
new_merge1(x0, [], :(x1, x2), x3)
new_compare14(x0, x1, ty_@0)
new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare14(x0, x1, ty_Char)
new_primCmpNat2(Zero, x0)
new_compare14(x0, x1, ty_Int)
new_compare3(Pos(Zero), Pos(Succ(x0)))
new_compare3(Neg(Zero), Neg(Zero))
new_compare(x0, x1, app(ty_[], x2))
new_compare11(x0, x1, x2)
new_compare0(x0, x1, x2, x3)
new_compare2(:%(x0, x1), :%(x2, x3), ty_Int)
new_primMulNat0(Succ(x0), Zero)
new_merge2(x0, [], x1)
new_primCmpNat0(x0, Zero)
new_merge00(x0, x1, x2, x3, GT, x4)
new_compare4(x0, x1)
new_compare14(x0, x1, ty_Bool)
new_sr(Pos(x0), Pos(x1))
new_compare3(Pos(Zero), Neg(Succ(x0)))
new_primCmpNat1(Succ(x0), Zero)
new_compare3(Neg(Zero), Pos(Succ(x0)))
new_compare3(Pos(Zero), Pos(Zero))
new_compare6(x0, x1)
new_compare3(Neg(Succ(x0)), Neg(x1))
new_compare(x0, x1, app(app(ty_@2, x2), x3))
new_primCmpNat2(Succ(x0), x1)
new_sr(Neg(x0), Pos(x1))
new_sr(Pos(x0), Neg(x1))
new_sr(Neg(x0), Neg(x1))
new_compare3(Pos(Succ(x0)), Neg(x1))
new_compare3(Neg(Succ(x0)), Pos(x1))
new_compare14(x0, x1, ty_Integer)
new_compare(x0, x1, app(app(ty_Either, x2), x3))
new_merge_pairs0(:(x0, []), x1)
new_primCmpNat1(Zero, Succ(x0))
new_compare(x0, x1, ty_@0)
new_primPlusNat1(Succ(x0), Succ(x1))
new_compare3(Neg(Zero), Pos(Zero))
new_compare3(Pos(Zero), Neg(Zero))

We have to consider all minimal (P,Q,R)-chains.
The approximation of the Dependency Graph [15,17,22] contains 1 SCC with 1 less node.

↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                    ↳ DependencyGraphProof
QDP
                        ↳ QDPOrderProof

Q DP problem:
The TRS P consists of the following rules:

new_mergesort'(vz501, :(vz5020, :(vz50210, vz50211)), ba) → new_mergesort'(new_merge1(vz501, vz5020, vz50210, ba), new_merge_pairs0(vz50211, ba), ba)

The TRS R consists of the following rules:

new_sr(Neg(vz503000), Neg(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, app(ty_Ratio, cb)) → new_compare2(vz5010, vz50200, cb)
new_primCmpNat1(Succ(vz5010000), Succ(vz50200000)) → new_primCmpNat1(vz5010000, vz50200000)
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Integer) → new_compare4(new_sr0(vz50100, vz502001), new_sr0(vz502000, vz50101))
new_compare10(vz5010, vz50200) → error([])
new_compare3(Pos(Zero), Neg(Zero)) → EQ
new_compare3(Neg(Zero), Pos(Zero)) → EQ
new_sr(Pos(vz503000), Pos(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_primCmpNat2(Zero, vz501000) → LT
new_merge00(vz511, vz512, vz513, vz514, LT, cd) → :(vz512, new_merge2(vz513, :(vz511, vz514), cd))
new_compare14(vz50200, vz502100, ty_Int) → new_compare3(vz50200, vz502100)
new_compare14(vz50200, vz502100, app(app(ty_@2, be), bf)) → new_compare8(vz50200, vz502100, be, bf)
new_compare(vz5010, vz50200, ty_Char) → new_compare1(vz5010, vz50200)
new_compare(vz5010, vz50200, ty_Bool) → new_compare6(vz5010, vz50200)
new_primPlusNat1(Succ(vz51600), Succ(vz50401000)) → Succ(Succ(new_primPlusNat1(vz51600, vz50401000)))
new_merge_pairs0(:(vz502110, :(vz5021110, vz5021111)), ba) → :(new_merge2(vz502110, vz5021110, ba), new_merge_pairs0(vz5021111, ba))
new_compare3(Neg(Zero), Pos(Succ(vz5020000))) → LT
new_compare14(vz50200, vz502100, ty_Char) → new_compare1(vz50200, vz502100)
new_sr0(vz502000, vz50101) → error([])
new_merge1(vz501, [], :(vz502100, vz502101), ba) → new_merge2(vz501, :(vz502100, vz502101), ba)
new_compare(vz5010, vz50200, ty_Float) → new_compare9(vz5010, vz50200)
new_merge_pairs0(:(vz502110, []), ba) → :(vz502110, [])
new_primMulNat0(Zero, Succ(vz5040100)) → Zero
new_primMulNat0(Succ(vz5030000), Zero) → Zero
new_compare(vz5010, vz50200, ty_Int) → new_compare3(vz5010, vz50200)
new_merge1(vz501, :(vz50200, vz50201), :(vz502100, vz502101), ba) → new_merge2(vz501, new_merge00(vz502100, vz50200, vz50201, vz502101, new_compare14(vz50200, vz502100, ba), ba), ba)
new_primPlusNat1(Zero, Zero) → Zero
new_compare14(vz50200, vz502100, ty_Ordering) → new_compare10(vz50200, vz502100)
new_compare7(vz5010, vz50200, bd) → error([])
new_primCmpNat1(Zero, Succ(vz50200000)) → LT
new_merge00(vz511, vz512, vz513, vz514, GT, cd) → :(vz511, new_merge2(:(vz512, vz513), vz514, cd))
new_compare8(vz5010, vz50200, be, bf) → error([])
new_primCmpNat2(Succ(vz5020000), vz501000) → new_primCmpNat1(vz5020000, vz501000)
new_compare(vz5010, vz50200, ty_Double) → new_compare12(vz5010, vz50200)
new_compare(vz5010, vz50200, app(app(app(ty_@3, bg), bh), ca)) → new_compare13(vz5010, vz50200, bg, bh, ca)
new_primMulNat0(Succ(vz5030000), Succ(vz5040100)) → new_primPlusNat0(new_primMulNat0(vz5030000, Succ(vz5040100)), vz5040100)
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Int) → new_compare3(new_sr(vz50100, vz502001), new_sr(vz502000, vz50101))
new_compare(vz5010, vz50200, app(app(ty_Either, bb), bc)) → new_compare0(vz5010, vz50200, bb, bc)
new_compare9(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(app(ty_@2, be), bf)) → new_compare8(vz5010, vz50200, be, bf)
new_compare0(vz5010, vz50200, bb, bc) → error([])
new_compare14(vz50200, vz502100, app(app(ty_Either, bb), bc)) → new_compare0(vz50200, vz502100, bb, bc)
new_compare14(vz50200, vz502100, app(ty_Maybe, bd)) → new_compare7(vz50200, vz502100, bd)
new_compare3(Pos(Zero), Pos(Succ(vz5020000))) → new_primCmpNat2(Zero, vz5020000)
new_compare3(Neg(Succ(vz501000)), Pos(vz502000)) → LT
new_primCmpNat1(Zero, Zero) → EQ
new_primCmpNat0(vz501000, Zero) → GT
new_compare3(Pos(Succ(vz501000)), Pos(vz502000)) → new_primCmpNat0(vz501000, vz502000)
new_compare3(Pos(Zero), Pos(Zero)) → EQ
new_merge2([], :(vz50200, vz50201), ba) → :(vz50200, vz50201)
new_primMulNat0(Zero, Zero) → Zero
new_merge_pairs0([], ba) → []
new_compare4(vz5010, vz50200) → error([])
new_primPlusNat0(Succ(vz5160), vz5040100) → Succ(Succ(new_primPlusNat1(vz5160, vz5040100)))
new_compare(vz5010, vz50200, ty_Integer) → new_compare4(vz5010, vz50200)
new_compare11(vz5010, vz50200, cc) → error([])
new_merge1(vz501, vz5020, [], ba) → new_merge2(vz501, vz5020, ba)
new_merge2(:(vz5010, vz5011), :(vz50200, vz50201), ba) → new_merge00(vz50200, vz5010, vz5011, vz50201, new_compare(vz5010, vz50200, ba), ba)
new_compare14(vz50200, vz502100, app(ty_[], cc)) → new_compare11(vz50200, vz502100, cc)
new_compare(vz5010, vz50200, ty_@0) → new_compare5(vz5010, vz50200)
new_primPlusNat0(Zero, vz5040100) → Succ(vz5040100)
new_compare3(Neg(Succ(vz501000)), Neg(vz502000)) → new_primCmpNat2(vz502000, vz501000)
new_merge2(vz501, [], ba) → vz501
new_primCmpNat1(Succ(vz5010000), Zero) → GT
new_compare3(Neg(Zero), Neg(Succ(vz5020000))) → new_primCmpNat0(vz5020000, Zero)
new_compare14(vz50200, vz502100, ty_Double) → new_compare12(vz50200, vz502100)
new_compare1(vz5010, vz50200) → error([])
new_compare6(vz5010, vz50200) → error([])
new_compare14(vz50200, vz502100, ty_Float) → new_compare9(vz50200, vz502100)
new_compare5(vz5010, vz50200) → error([])
new_compare12(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(ty_Maybe, bd)) → new_compare7(vz5010, vz50200, bd)
new_primPlusNat1(Succ(vz51600), Zero) → Succ(vz51600)
new_primPlusNat1(Zero, Succ(vz50401000)) → Succ(vz50401000)
new_compare3(Pos(Zero), Neg(Succ(vz5020000))) → GT
new_sr(Neg(vz503000), Pos(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_sr(Pos(vz503000), Neg(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_compare14(vz50200, vz502100, ty_Bool) → new_compare6(vz50200, vz502100)
new_compare(vz5010, vz50200, ty_Ordering) → new_compare10(vz5010, vz50200)
new_merge00(vz511, vz512, vz513, vz514, EQ, cd) → :(vz512, new_merge2(vz513, :(vz511, vz514), cd))
new_compare14(vz50200, vz502100, app(ty_Ratio, cb)) → new_compare2(vz50200, vz502100, cb)
new_compare14(vz50200, vz502100, app(app(app(ty_@3, bg), bh), ca)) → new_compare13(vz50200, vz502100, bg, bh, ca)
new_compare3(Pos(Succ(vz501000)), Neg(vz502000)) → GT
new_compare3(Neg(Zero), Neg(Zero)) → EQ
new_primCmpNat0(vz501000, Succ(vz5020000)) → new_primCmpNat1(vz501000, vz5020000)
new_compare14(vz50200, vz502100, ty_Integer) → new_compare4(vz50200, vz502100)
new_compare13(vz5010, vz50200, bg, bh, ca) → error([])
new_compare(vz5010, vz50200, app(ty_[], cc)) → new_compare11(vz5010, vz50200, cc)
new_compare14(vz50200, vz502100, ty_@0) → new_compare5(vz50200, vz502100)

The set Q consists of the following terms:

new_primPlusNat0(Succ(x0), x1)
new_compare14(x0, x1, ty_Double)
new_primCmpNat0(x0, Succ(x1))
new_merge2([], :(x0, x1), x2)
new_compare(x0, x1, ty_Bool)
new_merge1(x0, :(x1, x2), :(x3, x4), x5)
new_compare(x0, x1, ty_Integer)
new_compare9(x0, x1)
new_merge1(x0, x1, [], x2)
new_primMulNat0(Zero, Zero)
new_compare(x0, x1, ty_Char)
new_sr0(x0, x1)
new_compare14(x0, x1, app(ty_[], x2))
new_compare12(x0, x1)
new_compare(x0, x1, ty_Double)
new_compare14(x0, x1, app(app(ty_Either, x2), x3))
new_primPlusNat0(Zero, x0)
new_merge2(:(x0, x1), :(x2, x3), x4)
new_compare1(x0, x1)
new_compare(x0, x1, ty_Float)
new_compare14(x0, x1, ty_Ordering)
new_merge_pairs0(:(x0, :(x1, x2)), x3)
new_compare3(Pos(Succ(x0)), Pos(x1))
new_compare(x0, x1, ty_Ordering)
new_merge00(x0, x1, x2, x3, EQ, x4)
new_compare(x0, x1, app(ty_Maybe, x2))
new_compare5(x0, x1)
new_compare10(x0, x1)
new_compare3(Neg(Zero), Neg(Succ(x0)))
new_compare7(x0, x1, x2)
new_compare14(x0, x1, app(ty_Ratio, x2))
new_primPlusNat1(Zero, Zero)
new_merge00(x0, x1, x2, x3, LT, x4)
new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare2(:%(x0, x1), :%(x2, x3), ty_Integer)
new_compare14(x0, x1, ty_Float)
new_compare(x0, x1, app(ty_Ratio, x2))
new_primCmpNat1(Zero, Zero)
new_compare13(x0, x1, x2, x3, x4)
new_primCmpNat1(Succ(x0), Succ(x1))
new_compare14(x0, x1, app(app(ty_@2, x2), x3))
new_compare14(x0, x1, app(ty_Maybe, x2))
new_merge_pairs0([], x0)
new_primPlusNat1(Zero, Succ(x0))
new_compare8(x0, x1, x2, x3)
new_primMulNat0(Succ(x0), Succ(x1))
new_primPlusNat1(Succ(x0), Zero)
new_compare(x0, x1, ty_Int)
new_primMulNat0(Zero, Succ(x0))
new_merge1(x0, [], :(x1, x2), x3)
new_compare14(x0, x1, ty_@0)
new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare14(x0, x1, ty_Char)
new_primCmpNat2(Zero, x0)
new_compare14(x0, x1, ty_Int)
new_compare3(Pos(Zero), Pos(Succ(x0)))
new_compare3(Neg(Zero), Neg(Zero))
new_compare(x0, x1, app(ty_[], x2))
new_compare11(x0, x1, x2)
new_compare0(x0, x1, x2, x3)
new_compare2(:%(x0, x1), :%(x2, x3), ty_Int)
new_primMulNat0(Succ(x0), Zero)
new_merge2(x0, [], x1)
new_primCmpNat0(x0, Zero)
new_merge00(x0, x1, x2, x3, GT, x4)
new_compare4(x0, x1)
new_compare14(x0, x1, ty_Bool)
new_sr(Pos(x0), Pos(x1))
new_compare3(Pos(Zero), Neg(Succ(x0)))
new_primCmpNat1(Succ(x0), Zero)
new_compare3(Neg(Zero), Pos(Succ(x0)))
new_compare3(Pos(Zero), Pos(Zero))
new_compare6(x0, x1)
new_compare3(Neg(Succ(x0)), Neg(x1))
new_compare(x0, x1, app(app(ty_@2, x2), x3))
new_primCmpNat2(Succ(x0), x1)
new_sr(Neg(x0), Pos(x1))
new_sr(Pos(x0), Neg(x1))
new_sr(Neg(x0), Neg(x1))
new_compare3(Pos(Succ(x0)), Neg(x1))
new_compare3(Neg(Succ(x0)), Pos(x1))
new_compare14(x0, x1, ty_Integer)
new_compare(x0, x1, app(app(ty_Either, x2), x3))
new_merge_pairs0(:(x0, []), x1)
new_primCmpNat1(Zero, Succ(x0))
new_compare(x0, x1, ty_@0)
new_primPlusNat1(Succ(x0), Succ(x1))
new_compare3(Neg(Zero), Pos(Zero))
new_compare3(Pos(Zero), Neg(Zero))

We have to consider all minimal (P,Q,R)-chains.
We use the reduction pair processor [15].


The following pairs can be oriented strictly and are deleted.


new_mergesort'(vz501, :(vz5020, :(vz50210, vz50211)), ba) → new_mergesort'(new_merge1(vz501, vz5020, vz50210, ba), new_merge_pairs0(vz50211, ba), ba)
The remaining pairs can at least be oriented weakly.
none
Used ordering: Polynomial interpretation [25]:

POL(:(x1, x2)) = 1 + x2   
POL(:%(x1, x2)) = 1 + x1 + x2   
POL(EQ) = 0   
POL(GT) = 0   
POL(LT) = 0   
POL(Neg(x1)) = 1 + x1   
POL(Pos(x1)) = x1   
POL(Succ(x1)) = x1   
POL(Zero) = 0   
POL([]) = 0   
POL(app(x1, x2)) = 1 + x1 + x2   
POL(error(x1)) = 0   
POL(new_compare(x1, x2, x3)) = 1 + x1 + x2 + x3   
POL(new_compare0(x1, x2, x3, x4)) = 1   
POL(new_compare1(x1, x2)) = 1   
POL(new_compare10(x1, x2)) = 1   
POL(new_compare11(x1, x2, x3)) = 1   
POL(new_compare12(x1, x2)) = 1   
POL(new_compare13(x1, x2, x3, x4, x5)) = 1 + x3   
POL(new_compare14(x1, x2, x3)) = 0   
POL(new_compare2(x1, x2, x3)) = 1 + x1 + x2 + x3   
POL(new_compare3(x1, x2)) = x1   
POL(new_compare4(x1, x2)) = 1   
POL(new_compare5(x1, x2)) = 1   
POL(new_compare6(x1, x2)) = 1   
POL(new_compare7(x1, x2, x3)) = 1 + x3   
POL(new_compare8(x1, x2, x3, x4)) = 1   
POL(new_compare9(x1, x2)) = 0   
POL(new_merge00(x1, x2, x3, x4, x5, x6)) = 0   
POL(new_merge1(x1, x2, x3, x4)) = 0   
POL(new_merge2(x1, x2, x3)) = 0   
POL(new_merge_pairs0(x1, x2)) = 1 + x1   
POL(new_mergesort'(x1, x2, x3)) = x2   
POL(new_primCmpNat0(x1, x2)) = 0   
POL(new_primCmpNat1(x1, x2)) = 0   
POL(new_primCmpNat2(x1, x2)) = 0   
POL(new_primMulNat0(x1, x2)) = 0   
POL(new_primPlusNat0(x1, x2)) = 0   
POL(new_primPlusNat1(x1, x2)) = 1 + x1 + x2   
POL(new_sr(x1, x2)) = 1   
POL(new_sr0(x1, x2)) = 1   
POL(ty_@0) = 1   
POL(ty_@2) = 1   
POL(ty_@3) = 0   
POL(ty_Bool) = 1   
POL(ty_Char) = 1   
POL(ty_Double) = 0   
POL(ty_Either) = 1   
POL(ty_Float) = 0   
POL(ty_Int) = 1   
POL(ty_Integer) = 1   
POL(ty_Maybe) = 0   
POL(ty_Ordering) = 1   
POL(ty_Ratio) = 0   
POL(ty_[]) = 0   

The following usable rules [17] were oriented:

new_merge_pairs0([], ba) → []
new_merge_pairs0(:(vz502110, []), ba) → :(vz502110, [])
new_merge_pairs0(:(vz502110, :(vz5021110, vz5021111)), ba) → :(new_merge2(vz502110, vz5021110, ba), new_merge_pairs0(vz5021111, ba))



↳ HASKELL
  ↳ CR
    ↳ HASKELL
      ↳ BR
        ↳ HASKELL
          ↳ COR
            ↳ HASKELL
              ↳ Narrow
                ↳ AND
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                  ↳ QDP
                    ↳ DependencyGraphProof
                      ↳ QDP
                        ↳ QDPOrderProof
QDP
                            ↳ PisEmptyProof

Q DP problem:
P is empty.
The TRS R consists of the following rules:

new_sr(Neg(vz503000), Neg(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_compare(vz5010, vz50200, app(ty_Ratio, cb)) → new_compare2(vz5010, vz50200, cb)
new_primCmpNat1(Succ(vz5010000), Succ(vz50200000)) → new_primCmpNat1(vz5010000, vz50200000)
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Integer) → new_compare4(new_sr0(vz50100, vz502001), new_sr0(vz502000, vz50101))
new_compare10(vz5010, vz50200) → error([])
new_compare3(Pos(Zero), Neg(Zero)) → EQ
new_compare3(Neg(Zero), Pos(Zero)) → EQ
new_sr(Pos(vz503000), Pos(vz504010)) → Pos(new_primMulNat0(vz503000, vz504010))
new_primCmpNat2(Zero, vz501000) → LT
new_merge00(vz511, vz512, vz513, vz514, LT, cd) → :(vz512, new_merge2(vz513, :(vz511, vz514), cd))
new_compare14(vz50200, vz502100, ty_Int) → new_compare3(vz50200, vz502100)
new_compare14(vz50200, vz502100, app(app(ty_@2, be), bf)) → new_compare8(vz50200, vz502100, be, bf)
new_compare(vz5010, vz50200, ty_Char) → new_compare1(vz5010, vz50200)
new_compare(vz5010, vz50200, ty_Bool) → new_compare6(vz5010, vz50200)
new_primPlusNat1(Succ(vz51600), Succ(vz50401000)) → Succ(Succ(new_primPlusNat1(vz51600, vz50401000)))
new_merge_pairs0(:(vz502110, :(vz5021110, vz5021111)), ba) → :(new_merge2(vz502110, vz5021110, ba), new_merge_pairs0(vz5021111, ba))
new_compare3(Neg(Zero), Pos(Succ(vz5020000))) → LT
new_compare14(vz50200, vz502100, ty_Char) → new_compare1(vz50200, vz502100)
new_sr0(vz502000, vz50101) → error([])
new_merge1(vz501, [], :(vz502100, vz502101), ba) → new_merge2(vz501, :(vz502100, vz502101), ba)
new_compare(vz5010, vz50200, ty_Float) → new_compare9(vz5010, vz50200)
new_merge_pairs0(:(vz502110, []), ba) → :(vz502110, [])
new_primMulNat0(Zero, Succ(vz5040100)) → Zero
new_primMulNat0(Succ(vz5030000), Zero) → Zero
new_compare(vz5010, vz50200, ty_Int) → new_compare3(vz5010, vz50200)
new_merge1(vz501, :(vz50200, vz50201), :(vz502100, vz502101), ba) → new_merge2(vz501, new_merge00(vz502100, vz50200, vz50201, vz502101, new_compare14(vz50200, vz502100, ba), ba), ba)
new_primPlusNat1(Zero, Zero) → Zero
new_compare14(vz50200, vz502100, ty_Ordering) → new_compare10(vz50200, vz502100)
new_compare7(vz5010, vz50200, bd) → error([])
new_primCmpNat1(Zero, Succ(vz50200000)) → LT
new_merge00(vz511, vz512, vz513, vz514, GT, cd) → :(vz511, new_merge2(:(vz512, vz513), vz514, cd))
new_compare8(vz5010, vz50200, be, bf) → error([])
new_primCmpNat2(Succ(vz5020000), vz501000) → new_primCmpNat1(vz5020000, vz501000)
new_compare(vz5010, vz50200, ty_Double) → new_compare12(vz5010, vz50200)
new_compare(vz5010, vz50200, app(app(app(ty_@3, bg), bh), ca)) → new_compare13(vz5010, vz50200, bg, bh, ca)
new_primMulNat0(Succ(vz5030000), Succ(vz5040100)) → new_primPlusNat0(new_primMulNat0(vz5030000, Succ(vz5040100)), vz5040100)
new_compare2(:%(vz50100, vz50101), :%(vz502000, vz502001), ty_Int) → new_compare3(new_sr(vz50100, vz502001), new_sr(vz502000, vz50101))
new_compare(vz5010, vz50200, app(app(ty_Either, bb), bc)) → new_compare0(vz5010, vz50200, bb, bc)
new_compare9(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(app(ty_@2, be), bf)) → new_compare8(vz5010, vz50200, be, bf)
new_compare0(vz5010, vz50200, bb, bc) → error([])
new_compare14(vz50200, vz502100, app(app(ty_Either, bb), bc)) → new_compare0(vz50200, vz502100, bb, bc)
new_compare14(vz50200, vz502100, app(ty_Maybe, bd)) → new_compare7(vz50200, vz502100, bd)
new_compare3(Pos(Zero), Pos(Succ(vz5020000))) → new_primCmpNat2(Zero, vz5020000)
new_compare3(Neg(Succ(vz501000)), Pos(vz502000)) → LT
new_primCmpNat1(Zero, Zero) → EQ
new_primCmpNat0(vz501000, Zero) → GT
new_compare3(Pos(Succ(vz501000)), Pos(vz502000)) → new_primCmpNat0(vz501000, vz502000)
new_compare3(Pos(Zero), Pos(Zero)) → EQ
new_merge2([], :(vz50200, vz50201), ba) → :(vz50200, vz50201)
new_primMulNat0(Zero, Zero) → Zero
new_merge_pairs0([], ba) → []
new_compare4(vz5010, vz50200) → error([])
new_primPlusNat0(Succ(vz5160), vz5040100) → Succ(Succ(new_primPlusNat1(vz5160, vz5040100)))
new_compare(vz5010, vz50200, ty_Integer) → new_compare4(vz5010, vz50200)
new_compare11(vz5010, vz50200, cc) → error([])
new_merge1(vz501, vz5020, [], ba) → new_merge2(vz501, vz5020, ba)
new_merge2(:(vz5010, vz5011), :(vz50200, vz50201), ba) → new_merge00(vz50200, vz5010, vz5011, vz50201, new_compare(vz5010, vz50200, ba), ba)
new_compare14(vz50200, vz502100, app(ty_[], cc)) → new_compare11(vz50200, vz502100, cc)
new_compare(vz5010, vz50200, ty_@0) → new_compare5(vz5010, vz50200)
new_primPlusNat0(Zero, vz5040100) → Succ(vz5040100)
new_compare3(Neg(Succ(vz501000)), Neg(vz502000)) → new_primCmpNat2(vz502000, vz501000)
new_merge2(vz501, [], ba) → vz501
new_primCmpNat1(Succ(vz5010000), Zero) → GT
new_compare3(Neg(Zero), Neg(Succ(vz5020000))) → new_primCmpNat0(vz5020000, Zero)
new_compare14(vz50200, vz502100, ty_Double) → new_compare12(vz50200, vz502100)
new_compare1(vz5010, vz50200) → error([])
new_compare6(vz5010, vz50200) → error([])
new_compare14(vz50200, vz502100, ty_Float) → new_compare9(vz50200, vz502100)
new_compare5(vz5010, vz50200) → error([])
new_compare12(vz5010, vz50200) → error([])
new_compare(vz5010, vz50200, app(ty_Maybe, bd)) → new_compare7(vz5010, vz50200, bd)
new_primPlusNat1(Succ(vz51600), Zero) → Succ(vz51600)
new_primPlusNat1(Zero, Succ(vz50401000)) → Succ(vz50401000)
new_compare3(Pos(Zero), Neg(Succ(vz5020000))) → GT
new_sr(Neg(vz503000), Pos(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_sr(Pos(vz503000), Neg(vz504010)) → Neg(new_primMulNat0(vz503000, vz504010))
new_compare14(vz50200, vz502100, ty_Bool) → new_compare6(vz50200, vz502100)
new_compare(vz5010, vz50200, ty_Ordering) → new_compare10(vz5010, vz50200)
new_merge00(vz511, vz512, vz513, vz514, EQ, cd) → :(vz512, new_merge2(vz513, :(vz511, vz514), cd))
new_compare14(vz50200, vz502100, app(ty_Ratio, cb)) → new_compare2(vz50200, vz502100, cb)
new_compare14(vz50200, vz502100, app(app(app(ty_@3, bg), bh), ca)) → new_compare13(vz50200, vz502100, bg, bh, ca)
new_compare3(Pos(Succ(vz501000)), Neg(vz502000)) → GT
new_compare3(Neg(Zero), Neg(Zero)) → EQ
new_primCmpNat0(vz501000, Succ(vz5020000)) → new_primCmpNat1(vz501000, vz5020000)
new_compare14(vz50200, vz502100, ty_Integer) → new_compare4(vz50200, vz502100)
new_compare13(vz5010, vz50200, bg, bh, ca) → error([])
new_compare(vz5010, vz50200, app(ty_[], cc)) → new_compare11(vz5010, vz50200, cc)
new_compare14(vz50200, vz502100, ty_@0) → new_compare5(vz50200, vz502100)

The set Q consists of the following terms:

new_primPlusNat0(Succ(x0), x1)
new_compare14(x0, x1, ty_Double)
new_primCmpNat0(x0, Succ(x1))
new_merge2([], :(x0, x1), x2)
new_compare(x0, x1, ty_Bool)
new_merge1(x0, :(x1, x2), :(x3, x4), x5)
new_compare(x0, x1, ty_Integer)
new_compare9(x0, x1)
new_merge1(x0, x1, [], x2)
new_primMulNat0(Zero, Zero)
new_compare(x0, x1, ty_Char)
new_sr0(x0, x1)
new_compare14(x0, x1, app(ty_[], x2))
new_compare12(x0, x1)
new_compare(x0, x1, ty_Double)
new_compare14(x0, x1, app(app(ty_Either, x2), x3))
new_primPlusNat0(Zero, x0)
new_merge2(:(x0, x1), :(x2, x3), x4)
new_compare1(x0, x1)
new_compare(x0, x1, ty_Float)
new_compare14(x0, x1, ty_Ordering)
new_merge_pairs0(:(x0, :(x1, x2)), x3)
new_compare3(Pos(Succ(x0)), Pos(x1))
new_compare(x0, x1, ty_Ordering)
new_merge00(x0, x1, x2, x3, EQ, x4)
new_compare(x0, x1, app(ty_Maybe, x2))
new_compare5(x0, x1)
new_compare10(x0, x1)
new_compare3(Neg(Zero), Neg(Succ(x0)))
new_compare7(x0, x1, x2)
new_compare14(x0, x1, app(ty_Ratio, x2))
new_primPlusNat1(Zero, Zero)
new_merge00(x0, x1, x2, x3, LT, x4)
new_compare14(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare2(:%(x0, x1), :%(x2, x3), ty_Integer)
new_compare14(x0, x1, ty_Float)
new_compare(x0, x1, app(ty_Ratio, x2))
new_primCmpNat1(Zero, Zero)
new_compare13(x0, x1, x2, x3, x4)
new_primCmpNat1(Succ(x0), Succ(x1))
new_compare14(x0, x1, app(app(ty_@2, x2), x3))
new_compare14(x0, x1, app(ty_Maybe, x2))
new_merge_pairs0([], x0)
new_primPlusNat1(Zero, Succ(x0))
new_compare8(x0, x1, x2, x3)
new_primMulNat0(Succ(x0), Succ(x1))
new_primPlusNat1(Succ(x0), Zero)
new_compare(x0, x1, ty_Int)
new_primMulNat0(Zero, Succ(x0))
new_merge1(x0, [], :(x1, x2), x3)
new_compare14(x0, x1, ty_@0)
new_compare(x0, x1, app(app(app(ty_@3, x2), x3), x4))
new_compare14(x0, x1, ty_Char)
new_primCmpNat2(Zero, x0)
new_compare14(x0, x1, ty_Int)
new_compare3(Pos(Zero), Pos(Succ(x0)))
new_compare3(Neg(Zero), Neg(Zero))
new_compare(x0, x1, app(ty_[], x2))
new_compare11(x0, x1, x2)
new_compare0(x0, x1, x2, x3)
new_compare2(:%(x0, x1), :%(x2, x3), ty_Int)
new_primMulNat0(Succ(x0), Zero)
new_merge2(x0, [], x1)
new_primCmpNat0(x0, Zero)
new_merge00(x0, x1, x2, x3, GT, x4)
new_compare4(x0, x1)
new_compare14(x0, x1, ty_Bool)
new_sr(Pos(x0), Pos(x1))
new_compare3(Pos(Zero), Neg(Succ(x0)))
new_primCmpNat1(Succ(x0), Zero)
new_compare3(Neg(Zero), Pos(Succ(x0)))
new_compare3(Pos(Zero), Pos(Zero))
new_compare6(x0, x1)
new_compare3(Neg(Succ(x0)), Neg(x1))
new_compare(x0, x1, app(app(ty_@2, x2), x3))
new_primCmpNat2(Succ(x0), x1)
new_sr(Neg(x0), Pos(x1))
new_sr(Pos(x0), Neg(x1))
new_sr(Neg(x0), Neg(x1))
new_compare3(Pos(Succ(x0)), Neg(x1))
new_compare3(Neg(Succ(x0)), Pos(x1))
new_compare14(x0, x1, ty_Integer)
new_compare(x0, x1, app(app(ty_Either, x2), x3))
new_merge_pairs0(:(x0, []), x1)
new_primCmpNat1(Zero, Succ(x0))
new_compare(x0, x1, ty_@0)
new_primPlusNat1(Succ(x0), Succ(x1))
new_compare3(Neg(Zero), Pos(Zero))
new_compare3(Pos(Zero), Neg(Zero))

We have to consider all minimal (P,Q,R)-chains.
The TRS P is empty. Hence, there is no (P,Q,R) chain.